package cn.xiaohui;
import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;
/*
 * 模拟文件管理器
 */
public class DocumentManager {
	        public static void main(String[] args) throws Exception {
	        	Scanner sc=new Scanner(System.in);
				System.out.println("1：指定关键字检索文件；2：指定后缀名检索文件；3：复制文件/目录；4：退出");
				while (true) {
					System.out.println("请输入指令:");
					int command=sc.nextInt();
					switch (command) {
					case 1:
						searchByKeyWord();//指定关键字检索文件
						break;
                    case 2:
                    	searchBySuffix();//指定后缀名检索文件
                    	 break;
                    case 3:
                    	copyDirectory();//复制文件/目录
                    	 break;
                    case 4:
                    	 exit_OBJ();//退出系统
                    	 break;
					default:
						System.out.println("你输入的指令有误");
						break;
					}
				}
			}

	        /*
	         * 退出
	         */
			private static void exit_OBJ() {
				// TODO Auto-generated method stub
				System.out.println("你已退出系统,谢谢使用!");
				System.exit(0);
			}

			/*
			 * 复制文件/目录
			 */
			private static void copyDirectory() throws Exception {
				// TODO Auto-generated method stub
				Scanner sc=new Scanner(System.in);
				System.out.println("请输入源目录:");
				String srcDirectory=sc.next();//从控制台获取源路径
				File srcFile=new File(srcDirectory);
				//判断目录是否存在，是否是目录
				if (!srcFile.exists()||!srcFile.isDirectory()) {
					System.out.println("无效目录!");
					return;
				}
				System.out.println("请输入目标位置:");
				String destDirectory=sc.next();//从控制台获取路径
				File destFile=new File(destDirectory);
				if (!destFile.exists()||!destFile.isDirectory()) {
					//判断目录是否存在，是否是目录
					System.out.println("无效位置!");
					return;
				}
				//将源路径中的内容复制到目录路径下
				FileUtils.copySrcPathToDesPath(srcFile, destFile);
			}

			/*
			 * 指定后缀名检索文件
			 */
			private static void searchBySuffix() {
				// TODO Auto-generated method stub
				Scanner scan=new Scanner(System.in);
				System.out.println("请输入要检索的目录位置");
				String path=scan.next();
				File file=new File(path);
				//判断目录是否存在，是否是目录
				if (!file.exists()||!file.isDirectory()) {
					System.out.println("不是有效目录");
					return;
				}
				System.out.println("请输入搜索后缀:");
				String suffix=scan.next();//获取后缀字符串
				//在输入目录下获取所有指定后缀名的文件路径
				ArrayList<String>list=FileUtils.listFiles(file, suffix);
				for(Object obj:list){
					//将路径打印到控制台
					System.out.println(obj);
				}
			}

			/*
			 * 指定关键字检索文件
			 */
			private static void searchByKeyWord() {
				// TODO Auto-generated method stub
				Scanner sc=new Scanner(System.in);
				System.out.println("请输入要检索的目录位置:");
				String path=sc.next();
				File file=new File(path);
				//判断文件是否存在，是否是目录
				if (!file.exists()||!file.isDirectory()) {
					System.out.println("不是有效目录");
				    return;
				}
				
				System.out.println("请输入搜索关键字:");
				String key=sc.next();//获取关键字
				//在输入目录下获取所有包含关键字的路径
				ArrayList<String>list=FileUtils.listFiles(file, key);
				for(Object obj:list){
					//将路径打印到控制台
					System.out.println(obj);
				}
			}
}